<?php
	/*Funções que verificam dados no GET*/

	/**
	 * Checa se foi passado por GET, a uma certa página , um id válido.
	 */ 
	function checa_id_passado()
	{
		if(!empty($_GET))
		{
			if(isset($_GET['id']))
			{
				if (is_numeric($_GET['id']))
				{
					$id = (int)$_GET['id'];
					return ($id >= 0); // O id tem que ser um número positivo
				}
			}
		}	
		return false;
	}
	
	/**
	 * Checa se foi passado por GET, a uma certa página , o parametro com o nome passado
	 * @param $nome_parametro o nome do parametro para checar se foi passado
	 */  
	function checa_param_passado($nome_parametro)
	{
		if(!empty($_GET))
		{
			return isset($_GET[$nome_parametro]);
		}
		return false;
	}
	
	/*Funções de SESSION*/
	
	/**
	 * Essa função impede uma pessoa de ver uma página a não ser que ela esteja logada
	 * @param $pagina a página para redirecionar caso o usuário não esteja logado
	 * @return Retorna false se não estava logado e true se estava 
	 */
	function estaLogado($pagina, $nivel = 0)
	{
		// Se a pessoa não está logada redireciona
		if($_SESSION['logado'] != true)
		{
			header("Location: $pagina");
			return false;
		}
		// Se a pessoa não tem nível para acessar a página redireciona
		else if(isset($_SESSION['nivel']))
		{
			if((int)$_SESSION['nivel'] < (int)$nivel)
			{
				header("Location: $pagina");
				return false;
			}
		}
		return true;
	}
	
	/**
	 * Essa função impede uma pessoa de ver uma página a não ser que ela esteja logada como administrador
	 * @param $pagina a página para redirecionar caso o usuário não seja o administrador
	 * @param $nivel_administrador o nível para ser administrador
	 * @return Retorna false se não estava logado como administrador e true se estava
	 */
	function administrador($pagina, $nivel_administrador = 1)
	{
		return estaLogado($pagina, $nivel_administrador);	
	}
	
	/**
	 * Essa função gera o html para mensagens de um tipo passado (usada nas funções abaixo)
	 * @param $tipo coloque erro, sucesso ou info (será usado depois como valor de class da tag, pro css mexer)
	 * @param $mensagem a mensagem
	 * @param $small se o campo deve ser small, o default é false
	 * @param $escrever_na_tela se a mensagem deve aparecer na tela ou simplesmente ser retornada, o default é true
	 */
	function printMensagem($tipo, $mensagem, $small = false, $escrever_na_tela = true) {
		$html = "";
		if(!empty($mensagem))
		{
			if($small)
			{
				$html = '<small id="msg_'.$tipo.'" class="'.$tipo.'">'. $mensagem. '</small>';
			}
			else
			{
				$label = ucfirst($tipo);
				if($tipo == "info") // Caso especial para uma informação
					$label = "Informação";
				$html = '<div id="msg_'.$tipo.'" class="'.$tipo.'">'.'<strong>'.$label.':</strong><br />'. $mensagem. '</div>';
			}
			// Se tiver autorização para escrever na tela
			if($escrever_na_tela)
				echo $html; //Escreve o html na tela
		}
		
		return $html;
	}
	
	/**
	 * Essa função serve para colocar uma mensagem na SESSION que será usada em imprimeSession()
	 * @param $tipo coloque erro, sucesso ou info (será usado depois como valor de class da tag, pro css mexer)
	 * @param $mensagem é a mensagem que será exibida
	 */
	function colocaMensagemSession($tipo, $mensagem, $area = "")
	{
		$_SESSION['tipo'] = $tipo;
		$_SESSION['msg'.$area] = $mensagem;
	}
	
	/**
	 * Escreve na tela uma mensagem que tenha sido colocada na session (normalmente utilizando a função colocaMensagemSession)
	 * @param $area caso queira fazer as mensagens da session serem separadas em áreas (evita serem imprimidas em lugares indevidos), o default é vazio 
	 * @param $small valerá true se é para exibir a mensagem entre tags small e false se é para exibir em uma div (Valor DEFAULT: false)
	 * @param $escrever_na_tela valerá true se é para exibir na tela a mensagem e false se é apenas para retornar o seu valor (Valor DEFAULT: true)
	 * @return Retorna o html utilizado para exibir o conteúdo
	 */
	function imprimeSession($area = "", $small = false, $escrever_na_tela = true)
	{
		if(isset($_SESSION['msg'.$area]) && isset($_SESSION['tipo']))
		{
			$msg = $_SESSION['msg'.$area];
			$tipo = $_SESSION['tipo'];
			
			$html = printMensagem($tipo, $msg, $small, $escrever_na_tela);
		}
		
		unset($_SESSION['msg'.$area]);
		unset($_SESSION['tipo']);
		
		return $html;
	}
	
	/*Funções Úteis*/
	
	/**
	 * Essa função gera o html para mensagens de erro
	 */
	function printErro($erro, $small = false, $escrever_na_tela = true) {
		return printMensagem("erro", $erro, $small, $escrever_na_tela);
	}
	
	/**
	 * Essa função gera o html para mensagens de sucesso
	 */
	function printSucesso($sucesso, $small = false, $escrever_na_tela = true) {
		return printMensagem("sucesso", $sucesso, $small, $escrever_na_tela);
	}
	/**
	 * Essa função gera o html para mensagens de informação
	 */
	function printInfo($info, $small = false, $escrever_na_tela = true) {
		return printMensagem("info", $info, $small, $escrever_na_tela);
	}
	
	/**
	 * Se o valor de $valor for vazio, escreve a mensagem contida em $mensagem_vazio, caso contrário escreve o valor de $valor
	 * @param $valor o valor que será avaliado se é vazio ou não e que será escrito se não for vazio
	 * @param $mensagem_vazio a mensagem que será escrita se o campo for vazio
	 */
	function printCampoVazio($valor, $mensagem_vazio = "Esse valor não foi preenchido")
	{
		if(notEmpty($valor)){
			echo $valor;
		}
		else{
			echo $mensagem_vazio;
		}
	}
	
	/**
	 * Função que diz se um elemento passado existe em um conjunto de dados (pode ser um array ou uma string)
	 * @param $elemento O valor a ser procurado
	 * @param $conjunto O conjunto de dados, que pode ser um array ou uma string
	 * @return Retornará true se o elemento foi achado e false caso contrário
	 */
	function elemento_existe($elemento, $conjunto)
	{
		if(!isset($elemento) || !isset($elemento)) return false;
		if(is_array($conjunto)) // Se o conjunto for um array
		{
			return in_array($elemento, $conjunto);
		}
		else if(is_string($conjunto)) // Se o conjunto for uma string
		{
			return (strstr($conjunto, $elemento) != false);
		}
		return ($elemento == $conjunto); // Em ultimo caso retornará se um é igual ao outro
	}
	
	/**
	 * Gera um string aleatória 
	*/
	function senhaAleatoria()
	{
		$caracteresAceitos = 'abcdefghijklmnopqrstuvxywzABCDEFGHIJKLMNOPQRSTUXYWZ0123456789$@#';
	
		$max = strlen($caracteresAceitos)-1;
	
		$password = null;
	
		for($i=0; $i < 8; $i++) 
		{
		
			$password .= $caracteresAceitos{mt_rand(0, $max)};
		
		}
		return $password;		
	}
	
	/**
	 * Verifica se você está na ADM 
	*/
	function paginaAdm(){
		$url = $_SERVER ['REQUEST_URI'];	
		$tokens = explode("/", $url);
		
		return elemento_existe("adm", $tokens);
	}
	
	/**
	 * Pega o nome da página atual
	*/
	function curPageURL() {
	 $pageURL = 'http';
	 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
	 $pageURL .= "://";
	 if ($_SERVER["SERVER_PORT"] != "80") {
	  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
	 } else {
	  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
	 }
	 return $pageURL;
	}
	
	/**
	 * Função que coloca um array na tela de uma maneira formatada, para visualizar melhor o seu conteúdo
	*/
	function imprimeArray($array)
	{
		echo "<pre>";
		print_r($array);
		echo "</pre><br />";
	}
	
	// DETECTA IE
	

	function ae_detect_ie()
	{
	    if (isset($_SERVER['HTTP_USER_AGENT']) && 
	    (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
	        return true;
	    else
	        return false;
	}
	
	/*Funções de Data*/
	
	function data_normal($dtData, $mensagem_erro = "Data inexistente")
	{
		$data_exata = substr($dtData, 0, 10); // data do BD: xxxx-xx-xx (10 dígitos)
		$arrayData = explode("-", $data_exata);
		$dia = $arrayData[2];
		$mes = $arrayData[1];
		$ano = $arrayData[0];
		$data_normal = "$dia/$mes/$ano";
		if(data($data_normal)){
			return $data_normal.substr($dtData,10); // Retorna a data com o resto da string passada (que pode conter a hora por exemplo)
		}
		else{
			return $mensagem_erro; // Se não for uma data válida retorna uma mensagem de erro
		}
	}
	
	function data_BD($dtData)
	{
		$data_exata = substr($dtData, 0, 10); // data normal: xx/xx/xxxx (10 dígitos)
		$arrayData = explode("/", $data_exata);
		$dia = $arrayData[0];
		$mes = $arrayData[1];
		$ano = $arrayData[2];

		return "$ano-$mes-$dia".substr($dtData,10); // Retorna a data com o resto da string passada (que pode conter a hora por exemplo)
	}
	
	/*Funções para verificar se um campo é único*/
	
	/**
	 * Verifica se um campo passado é único em uma tabela passada
	 * @param $nome_campo o nome do campo na tabela
	 * @param $valor_campo o seu valor
	 * @param tabela para verificar se o campo é único
	 */
	function verifica_campo_unico($nome_campo, $valor_campo, $tabela)
	{
		$query = "SELECT * FROM $tabela WHERE $nome_campo = '$valor_campo'";
		$result	= mysql_query($query);
		$num = mysql_num_rows($result);

		if($num > 0) return true;
		return false;
	}
	
	/**
	 * Verifica se um login passado é único em uma tabela passada
	 * @param $login o valor do login
	 * @param tabela para verificar se o campo é único (Valor Default: usuario)
	 */
	function verifica_login_unico($login, $tabela = 'usuario'){
		return verifica_campo_unico('login', $login, $tabela);
	}
?>
